package com.exthirteen.textgamescript.model.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * <p>
 * 设备配置更新参数
 * </p>
 *
 * @author exthirteen
 * @since 2025/3/4
 */
@Data
public class WechatMessageNotifyDTO {

    // 设备ID
    @JsonProperty("appid")
    private String appId;

    // 所属微信的wxid
    @JsonProperty("Wxid")
    private String wxId;

    // 消息数据
    @JsonProperty("Data")
    private MessageData messageData;

    // 内部类，用于存储消息数据
    @Data
    public static class MessageData {

        // 消息ID
        @JsonProperty("MsgId")
        private Long msgId;

        // 消息发送人的wxid
        @JsonProperty("FromUserName")
        private FromUserName fromUserName;

        // 消息接收人的wxid
        @JsonProperty("ToUserName")
        private ToUserName toUserName;

        // 消息类型
        @JsonProperty("MsgType")
        private Integer msgType;

        // 消息内容
        @JsonProperty("Content")
        private Content content;

        // 状态
        @JsonProperty("Status")
        private Integer status;

        // 图片状态
        @JsonProperty("ImgStatus")
        private Integer imgStatus;

        // 图片缓冲区
        @JsonProperty("ImgBuf")
        private ImgBuf imgBuf;

        // 消息发送时间
        @JsonProperty("CreateTime")
        private Long createTime;

        // 消息来源
        @JsonProperty("MsgSource")
        private String msgSource;

        // 新消息ID
        @JsonProperty("NewMsgId")
        private Long newMsgId;
    }

    // 内部类，用于存储消息发送人的wxid
    @Data
    public static class FromUserName {
        @JsonProperty("string")
        private String stringValue;
    }

    // 内部类，用于存储消息接收人的wxid
    @Data
    public static class ToUserName {
        @JsonProperty("string")
        private String stringValue;
    }

    // 内部类，用于存储消息内容
    @Data
    public static class Content {
        @JsonProperty("string")
        private String stringValue;
    }

    // 内部类，用于存储图片缓冲区
    @Data
    public static class ImgBuf {
        @JsonProperty("iLen")
        private int iLenValue;
    }

}
